package Stream流;

import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Stream;

public class 元素去重和合并流 {
    public static void main(String[] args) {
        /*
        distinct  元素去重,依赖(hashCode和equals方法)
        concat    合并两个流为一个流
         */

        ArrayList<String> list1 = new ArrayList<>();
        Collections.addAll(list1, "张无忌", "张无忌", "张无忌", "张强", "张三丰", "张翠山", "张良", "王二麻子", "谢广坤");

        ArrayList<String> list2 = new ArrayList<>();
        Collections.addAll(list2, "周芷若", "赵敏");

        //1.distinct 元素去重
        list1.stream().distinct().forEach(s -> System.out.print(s + " "));
        //注意如果集合的类型是自定义类型要重写HashCode和equals方法
        //张无忌 张强 张三丰 张翠山 张良 王二麻子 谢广坤

        //2.concat   合并两个流为一个流--->尽可能保证数据类型相同,不同会提升为二者共同的父类
        Stream<String> concat = Stream.concat(list1.stream(), list2.stream());
        concat.forEach(s -> System.out.println(s));
    }
}
